/******************************************************************************
 * Copyright (C) 2025 COMPANY or its affiliates.
 * 
 * All Rights Reserved.
 * 
 @file ota.h
 * 
 @par dependencies 
 - ${stdint.h}          // 标准类型定义
 - ${other_common.h}    // 公共宏定义
 * 
 @author liubin | R&D Dept. | COMPANY
 * 
 @brief 模块对外接口声明，包括：
            - 数据结构定义（如xxx结构体）
            - 枚举类型定义（如xxx状态枚举）
            - 函数接口声明（如xxx_init/xxx_process）
 * 
 @version V1.0 2025-11-01
 *
 @note 1 tab == 4 spaces!
 *       - 使用说明：如接口调用顺序、参数范围限制
 *       - 移植说明：如跨平台需适配的宏、条件编译
 *       - 兼容性：与旧版本接口的兼容说明
 *
 *****************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef OTA_H
#define OTA_H
/* Includes ------------------------------------------------------------------*/
#include "FreeRTOS.h"
#include "cmsis_os.h"
#include "semphr.h"
#include "task.h"
/* Exported types ------------------------------------------------------------*/
#define OTA_BUFF_SIZE 1030 

typedef enum
{
    OTA_STATUS_WAIT_DOWNLOAD = 0,   // 空闲 = 等待下载
    OTA_STATUS_DOWNLOAD,            // 下载中  
    OTA_STATUS_WAIT_UPDATE,         // 等待升级
    OTA_STATUS_END,                 // 升级结束
}E_OTA_STATUS;
/* Exported constants --------------------------------------------------------*/
#define APP1_FLASH_SAVE_ADDR (0x08000000U | 0x20000U)
#define APP1_FLASH_RUN_ADDR (0x08000000U | 0x8000U)

#define APP1_FLASH_SAVE 128 * 1024 // 128KB
#define APP1_FLASH_RUN 96 * 1024   // 96KB

#define APP_FLASH_ADDR 0x8000000 | 0x8000 // app ��ַ
/* Exported macro ------------------------------------------------------------*/

extern QueueHandle_t Q_AppBuffer; 
extern xSemaphoreHandle S_ExtFlashState;
/* Exported functions ------------------------------------------------------- */

void ota_task_runnable(void* argument);
void SoftReset(void);
#endif /* OTA_H */

